stackswitcher: Set up relations and states
authorMatthias Clasen <mclasen@redhat.com>
Wed, 14 Oct 2020 04:25:57 +0000 (00:25 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 15 Oct 2020 01:04:25 +0000 (21:04 -0400)
Set up a CONTROLS relation between each tab button
and its page, and update the SELECTED property of
the buttons to match their active state.

gtk/gtkstackswitcher.c

index e9cbfc9b907dfeba64c76abd300209c1f729ce26..4392cc9cdb7b4ca74d4896685337bcb1bfb0d5f6 100644 (file)
@@ -267,6 +267,14 @@ add_child (guint             position,
   selected = gtk_selection_model_is_selected (self->pages, position);
   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), selected);
 
+  gtk_accessible_update_state (GTK_ACCESSIBLE (button),
+                               GTK_ACCESSIBLE_STATE_SELECTED, selected,
+                               -1);
+
+  gtk_accessible_update_relation (GTK_ACCESSIBLE (button),
+                                  GTK_ACCESSIBLE_RELATION_CONTROLS, g_list_append (NULL, page),
+                                  -1);
+
   g_signal_connect (button, "notify::active", G_CALLBACK (on_button_toggled), self);
   g_signal_connect (page, "notify", G_CALLBACK (on_page_updated), self);
 
@@ -331,6 +339,10 @@ selection_changed_cb (GtkSelectionModel *model,
         {
           selected = gtk_selection_model_is_selected (switcher->pages, i);
           gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), selected);
+
+          gtk_accessible_update_state (GTK_ACCESSIBLE (button),
+                                       GTK_ACCESSIBLE_STATE_SELECTED, selected,
+                                       -1);
         }
       g_object_unref (page);
     }